package com.zpark.se.wrapper_classes;

import java.util.Date;

/**
 * 包装类：Java的设计思想是“一切都是对象”，为了方便基本数据类型操作，为基本数据类型提供了对应的类
 * 包装类的作用：把基本数据类型转换为对象
 * byte -> Byte
 * short -> Short
 * int -> Integer
 * long -> Long
 * float -> Float
 * double -> Double
 * char -> Character
 * boolean -> Boolean
 */
public class Demo01 {
    public static void main(String[] args) {
        // 装箱：将基本数据类型转换为包装类的过程
        // 创建int的包装类对象
        Integer num = new Integer(100); // 手动装箱
        // 直接给包装类赋值
        Integer num2 = 100; // 将基本数据类型值赋值给包装类——装箱（自动装箱）
        /*
            装箱和拆箱
                在了解包装类后，下面介绍包装类的装箱与拆箱的概念。其实这两个概念本身并不难理解，基
            本数据类型转换为包装类的过程称为装箱，例如把 int 包装成 Integer 类的对象；包装类变为
            基本数据类型的过程称为拆箱，例如把 Integer 类的对象重新简化为 int。
                手动实例化一个包装类称为手动拆箱装箱。Java 1.5 版本之前必须手动拆箱装箱，之后可以
            自动拆箱装箱，也就是在进行基本数据类型和对应的包装类转换时，系统将自动进行装箱及拆箱操作，
            不用在进行手工操作，为开发者提供了更多的方便
         */

        // 拆箱：将包装类转为基本数据类型的过程
        int number = num2; // 自动拆箱
        int num3 = num2.intValue(); // 手动拆箱

        Integer it1 = 10;
        Integer it2 = 30;
        Integer it3 = it1 + it2;
        System.out.println(it3);

        // integer常用方法
        /*
            将数字内容的字符串转为整数
         */
        int i = Integer.parseInt("123");
        /*
            比较两个整数的大小，返回一个整数，如果第一个参数大于第二个参数，返回一个正整数，
            如果第一个参数等于第二个参数，返回0，如果第一个参数小于第二个参数，返回一个负整数
         */
        int compare = Integer.compare(12, 13);
        /*
            将字符串转为Integer类型，但是允许字符串中存在其他内容
         */
        Integer hello = Integer.decode("56");
        System.out.println(hello);

        /*
            返回两个整数中的较大值
         */
        int max = Integer.max(56, 89);
        /*
        * 返回两个整数中的较小值
         */
        int min = Integer.min(56, 89);

        /*
            返回一个整数的二进制补码表示形式
         */
        int reverse = Integer.reverse(56);
        System.out.println(reverse);
        /*
            将一个整数转为字符串
         */
        String s = Integer.toString(56);
        String s1 = "12";
        /*
            将一个字符串转为Integer类型
         */
        Integer integer = Integer.valueOf(s1);

        /*
            将包装类转为基本数据类型int
         */
        int i1 = it1.intValue();
        /*
            将包装类转为double类型
         */
        double v = it1.doubleValue();

    }
}

